<?php
/**
 * Created by PhpStorm. User: ADun, Date: 14/12/27 下午12:52
 * Description:
 */
require_once 'linhe.php';

class Page{ //页面名称
    const t提交='commit';
    const ajaxData='AjaxKeyword';
    const g逛='AllProductList';
    const y用户中心='UserInfo';
    const d打开直连='OpenDirectLink';
    const m卖家中心='SellerHome';
    const m卖家中心_账目='Seller1Account';
    const m卖家中心_订单='Seller1Order';
    const m卖家中心_商品='Seller1Products';
    const m卖家中心_设置='Seller1Setup';
    const w我的商品列表='MyProductList';
    const w我的直连='MyDirectLink';
    const t添加商品='ProductInfo';
    const h会员管理='MemberList';
    const k卡包='myCards';
    const s逛商铺='shopList';
    const f发卡='MemberCardAdd';
    const s刷卡='MemberCardUse';
    const action='Ajax';
    const b帮助='HelpItem';
    const t添加帮助='AddHelp';
    const b帮助管理='HelpManage';
    const c查询管理='AdHocQueryManage';
    const t添加万能查询='AddQuery';
    const c查询结果='QueryResult';
    const h汇总='SumData';
    const h明细='DetailData';
    const b病历管理='Seller15records';
    const b病历列表='Seller15history';
    const b空床位列表='Seller15open';
}

class StaticFunctions{
    public $vo信息中心;
    function __construct(C信息中心 $vo)
    {
        $this->vo信息中心=$vo;
    }

    public function StartNewSession( ){

    }
}
/**
 * 页面数据提供
 * Class CUI数据中心
 */
class CUI数据中心 extends Base {
    private $vs页面; //页面名称
    private $vs用户openId; //当前名称
    public $viServ_id; //哪个公众号
    /** @var C信息中心 */
    public $vo信息中心;
    /** @var C用户 */
    public $vc当前用户;
    public function __construct($vs页面, $vs用户openId)
    {
        parent::__construct();
        $this->vs页面=$vs页面;
        $this->vs用户openId=$vs用户openId;
        $do = new Do用户();
        $do->set_openID($vs用户openId);
        $do->loadByKeys($do->get属性数组());
        $vs公众号OpenId= $do->get_公众号openID();
        logger()->logInfo('UI数据中心准备获取信息中心123'.$vs用户openId.$vs公众号OpenId);

        $this->vo信息中心=C信息中心::get实列根据用户Oid($vs用户openId);
        if ($this->vo信息中心) {
            $this->vc当前用户=$this->vo信息中心->vc用户;
            pdo()->update('用户',array('最后登录时间'=>Date('Y-m-d H:i:s')),array('openID'=>$vs用户openId));
        }
    }

    private function get页面业务类(){
        switch ($this->vs页面){
            case Page::g逛:
                return new C关键字();
                break;
            case Page::d打开直连:
                return new StaticFunctions($this->vo信息中心);
                break;
            case Page::w我的商品列表:
                return new C关键字();
                break;
            default:
                return null;
                break;
        }
    }

    public function fc所有可关联人员(){
        $专家 = $this->fc查找所有店长();
        $查看所有介绍人 =$this->fc查看所有介绍人();
        $所有可关联人员 = array();
        foreach($专家 as $value){
            $所有可关联人员[$value['id']]=$value;
        }
        foreach($查看所有介绍人 as $value){
            $所有可关联人员[$value['id']]=$value;
        }
        return $所有可关联人员;
    }

    public function get已推广用户列表($用户id,$当前页码,$参数) {
        $sql = "select c.name,b.最初关注时间,c.`认证` from 用户推广表 a left join 用户推广详细 b on a.二维码编号=b.二维码编号 left join 用户 c on b.uid=c.id where a.用户id=$用户id and c.id is not null and c.id <> '' order by b.id desc";
        return pdo() -> page($sql,$当前页码,10,$参数);
    }

    public function 判断店铺是否有置顶文章($店铺id) {
        return pdo()->selectColumns('店铺推广文章',array('*'),array('所属店铺id'=>$店铺id,'置顶'=>1));
    }
    public function fx显示店铺推广主页($店长id) {

        $店铺= pdo()->selectColumns('店铺',array('推广店铺介绍',"店铺名称"),array('店长ID'=>$店长id));
       // print_r($店铺);
        return $店铺;
    }
    public function fx显示店铺名称($店长id) {

        $店长= pdo()->selectColumns('用户',array('seller_name'),array('id'=>$店长id));
        return $店长['seller_name'];
    }
    public function bl显示病历($当前页码,$参数,$搜索=null){

        $sql = "select a.床号,b.* ,c.name from 床位 a left join 病历 b on a.id=b.床位id left join 用户 c on b.主治医师id=c.id where a.病历id>0 and b.出院时间 is null and b.店铺id=".$_SESSION['vo用户数据']['所属店铺id'] ;

        if($搜索['标题']!=null){
            $sql.=" and b.title like '%".$搜索['标题']."%'";
        }
        if($搜索['床位']!=null){
            $sql.=" and a.床号 like '%".$搜索['床位']."%'";
        }
        $sql.=" order by a.床号 asc ";

        $病历=pdo()->page($sql,$当前页码,10,$参数);

        return $病历;
    }
    public function bl床位查询(){

        $sql = "select a.床号 from 床位 a left join 病历 b on a.id=b.床位id left join 用户 c on b.主治医师id=c.id where a.病历id>0 and b.出院时间 is null and b.店铺id=".$_SESSION['vo用户数据']['所属店铺id'];

        $sql.=" order by a.床号 asc ";

        $床位=pdo()->selectAll($sql);

        return $床位;
    }
    public function bl历史病历($当前页码,$参数,$搜索=null){


        $sql = "SELECT  a.*,b.`床号`,.c.`name`  from (`病历` a LEFT JOIN `床位` b on(a.`床位id` = b.id)) LEFT JOIN `用户` c ON(a.`主治医师id`=c.id) WHERE a.`店铺id`=".$_SESSION['vo用户数据']['所属店铺id'];

        if($搜索['标题']!=null){
            $sql.=" and a.title like '%".$搜索['标题']."%'";
        }
        if($搜索['病历号']!=null){
            $sql.=" and a.id=".$搜索['病历号'];
        }
        $sql.=" order by a.id desc ";

        $病历=pdo()->page($sql,$当前页码,10,$参数);

        return $病历;
    }
    public function bl空床位($当前页码,$参数,$搜索=null){

        $sql = "select * from 床位 where 病历id=0 and 店铺id=".$_SESSION['vo用户数据']['所属店铺id'];

        if($搜索['床位']!=null){

            $sql.=" and 床号 =".$搜索['床位'];
        }

        $空床位=pdo()->page($sql,$当前页码,10,$参数);

        return $空床位;
    }
    public function bl空床位查询(){

        $sql = "select * from 床位 where 病历id=0 and 店铺id=".$_SESSION['vo用户数据']['所属店铺id'];

        $空床位查询=pdo()->selectAll($sql);

        return $空床位查询;
    }
    public function 上传图片($图片信息,$图片路径,$前置=null,$正式路径=null){
        $文件目录 = G_LHDir.$图片路径;
        if($正式路径){
            $文件目录 = $正式路径;
        }
        if (!empty($图片信息["pic"]["name"])) { //提取文件域内容名称，并判断
                if(!file_exists($文件目录))
                {
                //检查是否有该文件夹，如果没有就创建，并给予最高权限
                    mkdir("$文件目录", 0777);
                }
                //允许上传的文件格式
                $tp = array('image/jpg','image/jpeg','image/png','image/pjpeg');

                //检查上传文件是否在允许上传的类型
                if(!in_array($图片信息["pic"]["type"],$tp))
                {
                    return '文件上传类型错误!';
                }

                if($图片信息["pic"]["size"]>10194304) {
                    return '图片大小超过10M!';
                }
                $filetype = $图片信息['pic']['type'];
                if($filetype == 'image/jpeg'){
                    $type = '.jpg';
                }
                if ($filetype == 'image/jpg') {
                    $type = '.jpg';
                }
                if ($filetype == 'image/pjpeg') {
                    $type = '.jpg';
                }
                if ($filetype == 'image/png') {
                    $type = '.jpg';
                }
                if($图片信息["pic"]["name"])
                {
                $today=date('YmdHis'); //获取时间并赋值给变量
                $file2 = $文件目录.$前置.$today.$type; //图片的完整路径
                $imgurl =$图片路径.$前置.$today.$type; //图片名称
                $flag=1;
                }//END IF
            if($flag) $result=move_uploaded_file($图片信息["pic"]["tmp_name"],$file2);
            //特别注意这里传递给move_uploaded_file的第一个参数为上传到服务器上的临时文件
        }
        if($result) {
            return $imgurl;
        }else {

            return '图片上传失败!';
        }
    }

    public function 多图上传($图片信息,$图片路径,$前置=null,$name='pic') {
        // $name 为上传文件文本框的 name
        $文件目录 = G_LHDir.$图片路径;
        $num=count($图片信息[$name]["name"]);
        $multiurl=array();
        for($i=0;$i<$num;$i++){
            if ($图片信息[$name]["name"][$i]!=null) { //提取文件域内容名称，并判断
                if(!file_exists($文件目录))
                {
                    //检查是否有该文件夹，如果没有就创建，并给予最高权限
                    mkdir("$文件目录", 0777);
                }
                //允许上传的文件格式
                $tp = array('image/jpg','image/jpeg','image/png','image/pjpeg');

                //检查上传文件是否在允许上传的类型
                if(!in_array($图片信息[$name]["type"][$i],$tp))
                {
                    return '文件上传类型错误!';
                }

                if($图片信息[$name]["size"][$i]>20971520) {
                    return '图片大小超过20M!';
                }
                $filetype = $图片信息[$name]['type'][$i];
                if($filetype == 'image/jpeg'){
                    $type = '.jpg';
                }
                if ($filetype == 'image/jpg') {
                    $type = '.jpg';
                }
                if ($filetype == 'image/pjpeg') {
                    $type = '.jpg';
                }
                if ($filetype == 'image/png') {
                    $type = '.jpg';
                }
                if($图片信息[$name]["name"][$i])
                {
                    $today=date('YmdHis'); //获取时间并赋值给变量
                    $file2 = $文件目录.$前置.$i.$today.$type; //图片的完整路径
                    $imgurl =$图片路径.$前置.$i.$today.$type; //图片名称
                    $result=move_uploaded_file($图片信息[$name]["tmp_name"][$i],$file2);
                }//END IF
                $multiurl[]=$imgurl;

            }else {
                $multiurl[]="没有图片";
            }

        }
        return $multiurl;
    }

    public function 获取指定用户的商品关键字($用户id) {
        $do = new DoKeywords();
        $where['user_id'] = $用户id;
        $where['type_id'] = 0;
        $数组对象 = pdo()->selectBOs($do,$where);
        $数组 = Tools::object2array($数组对象);
        return json_encode($数组);
    }


    public function 更新用户临时地理位置($post) {
        $data['临时经度'] = $post['longitude'];
        $data['临时纬度'] = $post['latitude'];
        $where['openID'] = $post['openID'];
        $更新结果 = pdo()->update('用户',$data,$where);
        return $更新结果;
    }

    public function 当前商户店铺信息($用户id) {
        $用户信息 = pdo()->selectColumns('用户',array('id','认证','店员工','多代理','上级'),array('id'=>$用户id));
        $店长id = null;
        if($用户信息['认证']==2 && $用户信息['多代理']==2) {
            $店长id = $用户信息['id'];
        }else if($用户信息['店员工']==2) {
            $店长id = $用户信息['上级'];
        }
        if(Empty($店长id)) return false;
        return pdo()->selectColumns('店铺',array('*'),array('店长ID'=>$店长id));
    }


    public function fp判断当前用户session是否需要更新($用户id) {
        $更新信息 = pdo()->selectColumns('用户',array('更新缓存'),array('id'=>$用户id));
        pdo()->update('用户',array('更新缓存'=>''),array('id'=>$用户id));
        return $更新信息['更新缓存'];
    }

    public function 生成有效链接($文件名,$state,$拼接=array()) {
        $enc=substr($state,3);
        $解析后数组=Tools::object2array(json_decode(urldecode($enc)));
        if(is_array($文件名)) {
            $文件名['publicnumber'] = $解析后数组['publicnumber'];
            $解析后数组=null;
            $解析后数组 = $文件名;
        } else {
            $解析后数组[0] = $文件名;
        }
        if($拼接) $解析后数组 = array_merge($解析后数组,$拼接);
        $va参数 = "000" . urlencode(json_encode($解析后数组));
        return 'index.php?state='.$va参数;
    }

    /**
     * @param null $vsOpenId
     * @return bool|Do用户
     */
    public function get用户信息($vsOpenId=null){
        if(empty($vsOpenId)){
            if($this->vo信息中心->vc用户->vo用户数据) return $this->vo信息中心->vc用户->vo用户数据;
            $vsOpenId=$this->vs用户openId;
        }

        $do=new Do用户();
        $do->set_openID($vsOpenId);
        $ok=$do->loadByKeys($do->get属性数组());
        if($ok) return $do;
        else return $ok;
    }

    public function fg给session赋值() {
        C用户::fg给session赋值();
    }


    /**
     * @param null $vsOpenId
     * @return bool|Do用户
     */
    public function get用户状态($vsOpenId)
    {
        $do= $this-> f获取当前用户信息($vsOpenId);
        $ret=$this->f查看当前用户的全部身份($do);

        return $ret;
    }

    private function  f获取当前用户信息($vsOpenId){
        if ($this->vo信息中心->vc用户->vo用户数据) $do = $this->vo信息中心->vc用户->vo用户数据;
        else {
            $do = new Do用户();
            $do->set_openID($vsOpenId);
            $do->loadByKeys($do->get属性数组());
        }
        return $do;
    }
    private function f查看当前用户的全部身份($do){
        $ret = "";
        if ($do->get_认证() =='2' ||$do->get_店员工()=='2'){
            $ret.='当前状态：';
            $do二维码=new Do用户二维码();
            $do二维码->set_当前绑定员工id($do->get_id());
            $ok=$do二维码->loadByKeys($do二维码->get属性数组());
            if($ok) $ret.='已绑定：'.$do二维码->get_代理名称().'. ';
            else $ret.= '未绑定收银台. <br/>';
        }

        if ($do->get_认证() =='2' || $do->get_店员工()=='2') {
            $ret .= '<br/>当前身份：';
            if ($do->get_店员工() == '2') $ret .= '店员工. '; else {
                if ($do->get_认证() == '2') $ret .= '已认证'; else  $ret .= '未认证';
             //   if ($do->get_多代理() == '2') $ret .= '多收银店长';
              //  if ($do->get_连锁() == '2') $ret .= '连锁店店长';
                if ($do->get_连锁() == '1' && $do->get_多代理() == '1') $ret .= '单人店长';
                $ret .= '. ';
            }
            $vs上级id = $do->get_上级();
            if (!empty($vs上级id)) {
                $do上级 = new Do用户();
                $do上级->set_id($do->get_上级());
                $do上级->loadByKeys($do上级->get属性数组());

                $ret .= '上级店长：' . $do上级->get_seller_name() . '. ';
            }
        }
        if($ok) $ret.="<img src='".G_二维码查看目录 .$do二维码->get_代理id().".jpg' style='width:200px'>";
        return $ret;

    }

    public function 获取用户临时坐标($用户id) {
        $用户信息 = pdo()->selectColumns('用户',array('临时经度','临时纬度'),array('id'=>$用户id));
        return $用户信息;
    }


/*
 *  no use
 *
private  function wgs2bd($lat, $lon) {
$wgs2gcj = wgs2gcj($lat, $lon);
$gcj2bd = gcj2bd($wgs2gcj[0], $wgs2gcj[1]);
return $gcj2bd;
}

private  function gcj2bd($lat, $lon) {
    $x = $lon;
    $y = $lat;
     $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
       $z = sqrt($x * $x + $y * $y) + 0.00002 * sin($y * $x_pi);
       $theta = atan2($y, $x) + 0.000003 * cos($x * $x_pi);
       $bd_lon = z * cos($theta) + 0.0065;
       $bd_lat = z * sin($theta) + 0.006;
       return array( $bd_lat, $bd_lon );
}

public  function bd2gcj($lat, $lon) {
    $x = $lon - 0.0065;
    $y = $lat - 0.006;
    $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
       $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi);
       $theta = atan2($y, $x) - 0.000003 * cos($x * $x_pi);
       $gg_lon = $z * cos($theta);
       $gg_lat = $z * sin($theta);
       return array($gg_lat, $gg_lon );
}
 */

    private  function wgs2gcj($lat, $lon) {
        $pi = 3.14159265358979324;
        $a = 6378245.0;
        $ee = 0.00669342162296594323;
        $dLat = $this->transformLat($lon - 105.0, $lat - 35.0);
        $dLon = $this->transformLon($lon - 105.0, $lat - 35.0);
        $radLat =$lat / 180.0 * $pi;
        $magic = sin($radLat);
        $magic = 1 - $ee * $magic * $magic;
        $sqrtMagic = sqrt($magic);
        $dLat = ($dLat * 180.0) / (($a * (1 - $ee)) / ($magic * $sqrtMagic) * $pi);
        $dLon = ($dLon * 180.0) / ($a / $sqrtMagic * cos($radLat) * $pi);
        $mgLat = $lat + $dLat;
        $mgLon = $lon + $dLon;
        $loc = array($mgLat, $mgLon );
        return $loc;
    }

    private  function transformLat($lat, $lon) {
        $pi = 3.14159265358979324;
        $ret = -100.0 + 2.0 * $lat + 3.0 * $lon + 0.2 * $lon * $lon + 0.1 * $lat * $lon + 0.2 * sqrt(abs($lat));
        $ret += (20.0 * sin(6.0 * $lat * $pi) + 20.0 * sin(2.0 * $lat * $pi)) * 2.0 / 3.0;
        $ret += (20.0 * sin($lon * $pi) + 40.0 * sin($lon / 3.0 * $pi)) * 2.0 / 3.0;
        $ret += (160.0 * sin($lon / 12.0 * $pi) + 320 * sin($lon * $pi  / 30.0)) * 2.0 / 3.0;
           return $ret;
    }

    private  function transformLon($lat, $lon) {
    $pi = 3.14159265358979324;
        $ret = 300.0 + $lat + 2.0 * $lon + 0.1 * $lat * $lat + 0.1 * $lat * $lon + 0.1 * sqrt(abs($lat));
        $ret += (20.0 * sin(6.0 * $lat * $pi) + 20.0 * sin(2.0 * $lat * $pi)) * 2.0 / 3.0;
        $ret += (20.0 * sin($lat * $pi) + 40.0 * sin($lat / 3.0 * $pi)) * 2.0 / 3.0;
        $ret += (150.0 * sin($lat / 12.0 * $pi) + 300.0 * sin($lat / 30.0 * $pi)) * 2.0 / 3.0;
           return $ret;
    }





    private function  计算距离($lat1, $lng1, $lat2, $lng2,$decimal=2) {
        //$len_type 1.km  2.m
        $radLat1 = $lat1 * PI ()/ 180.0;   //PI()圆周率
        $radLat2 = $lat2 * PI() / 180.0;
        $a = $radLat1 - $radLat2;
        $b = ($lng1 * PI() / 180.0) - ($lng2 * PI() / 180.0);
        $s = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2)));
        $s = $s * 6378.137;
        $s = round($s * 1000);
        return round($s, $decimal);
    }

    public function get关键字($vi关键字id){
        $doKey = new DoKeywords2();
        //$doKey->set_id($kid);
        $ret=$doKey->loadById($vi关键字id);
        if($ret) return $doKey;
        else return $ret;
    }

    public function get用户关键字列表(){
        // w我的商品列表='MyProductList';
        return C用户::fc查看关键字列表($this->vs用户openId);
    }
    public function get根据名称获取关键字列表($vs关键字名称){
        return C关键字::f名称查询($vs关键字名称);
    }

    public function get商户会员卡列表($用户id,$当前页,$参数,$关键词){
        $vo=C商户::initByParent($this->vc当前用户);
        return $vo->get会员卡列表($用户id,$当前页,$参数,$关键词);
    }


    public function get病历评论列表($病历id,$当前页,$参数,$关键词){
        $vo=C商户::initByParent($this->vc当前用户);
        return $vo->get病历评论($病历id,$当前页,$参数);
    }

    public function get病历文章评论列表($病历文章id,$当前页,$参数,$关键词){
        $vo=C商户::initByParent($this->vc当前用户);
        return $vo->get病历文章评论($病历文章id,$当前页,$参数);
    }

    public function get当前用户是否关注该病例($病历id){
        $关注id = pdo()->selectColumns("关注病历",array('id','状态'),array('用户id'=>$_SESSION['vo用户数据']['id'],'病历id'=>$病历id));
        return $关注id;
    }

    public function get当前用户是否报名该课程($课程id){
        $报名id = pdo()->selectColumns("语音课程报名",array('id','状态'),array('用户id'=>$_SESSION['vo用户数据']['id'],'课程id'=>$课程id));
        return $报名id;
    }

    public function 检测该用户重复报名($语音课程,$课程id){
        $开始时间 = date("Y-m-d H:i:s",(strtotime($语音课程['开始时间']) -1)) ;
        $结束时间 = date("Y-m-d H:i:s",(strtotime($语音课程['结束时间']) +1)) ;

        //报名的时间不冲突的,未结束的,不是本课程的,而且未取消报名
        $sql ="SELECT count(a.`id`) as `num`  FROM `语音课程报名` a LEFT JOIN `语音课程` b  ON a.`课程id`=b.id WHERE a.`用户id` ='".$_SESSION['vo用户数据']['id']."'   AND   b.`状态` !='结束'  AND b.id != '".$课程id."'
 AND a.`状态`='报名' AND
 ( b.`开始时间` between  '".$开始时间."' AND '".$结束时间."'
 OR
   b.`结束时间` between   '".$开始时间."' AND '".$结束时间."');";


        $时间冲突 = pdo()->selectAll($sql);
        return $时间冲突[0]['num'];
    }

    public function se查看店铺已有床位(){
        $床位do = new Do床位();
        $床位 = pdo()->selectBOs($床位do,array("店铺id"=>$_SESSION['vo用户数据']['所属店铺id']));
        return $床位;
    }


    public function fs显示店铺员工($所属店铺id){
        $店员工 = pdo()->selectAll("select * from `用户` WHERE 所属店铺id='".$所属店铺id."' order by `店员工`   ");

        return $店员工;
    }
    public function fc查病历($id){
        $病历 = pdo()->selectOne(" select a.*,c.`name` AS 主治医师,(SELECT  b.`床号` FROM `床位` b WHERE b.id=a.`床位id` ) AS `床位` from `病历` a  LEFT JOIN `用户` c ON(c.id = a.`主治医师id`)  WHERE  a.id={$id};");
        return $病历;
    }

    public function fc查病历文章($id){
        $病历文章 = pdo()->selectOne(" SELECT a.*,b.`name`,b.openID,b.`头像`,c.`医院`,b.description,d.`区域`  FROM `病历文章` a  LEFT JOIN `用户` b ON (a.`添加用户id` = b.id)
LEFT JOIN `医院` c ON(a.`医院id` =c.id) LEFT JOIN `区域` d ON(a.`区域id` = d.id)
  WHERE  a.id={$id};");
        return $病历文章;
    }

    public function fc查语音课程($id){
        $语音课程 = pdo()->selectOne("SELECT a.*,b.name,b.description,b.`头像` FROM `语音课程` a LEFT JOIN `用户` b ON(a.`讲课专家id`= b.id) WHERE a.id={$id};");

        return $语音课程;
    }


    public function commit保存用户信息(Do用户 $do){
        $ret=C用户::fx修改信息($do);
        if($ret)
            return '用户信息保存成功';
        else
            return '用户信息保存失败';
    }




    public function f随机字符串($length){
        $str = null;
        $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
        $max = strlen($strPol)-1;

        for($i=0;$i<$length;$i++){
            $str.=$strPol[rand(0,$max)];//rand($min,$max)生成介于min和max两个数之间的一个随机整数
        }

        return $str;
    }

    public function fc查找所有店长(){
        $do  =  new Do用户();
        return pdo()->selectAll("SELECT  id,`seller_name` as `显示名称` FROM `用户` WHERE `认证`='2' and `公众号ID`='".$_SESSION['vo用户数据']['公众号ID']."' and id !='".$_SESSION['vo用户数据']['id']."' ;");


    }

    public function fc查找所有医院(){
        $do  =  new Do医院();
        return pdo()->selectBOs($do);
    }

    public function fc查找所有区域(){
        $do  =  new Do区域();
        return pdo()->selectBOs($do);
    }


    public function fc查看所有介绍人(){
        $do  =  new Do用户();
        return pdo()->selectAll("SELECT c.id,c.`name` as `显示名称` FROM `用户推广详细` a LEFT JOIN `用户推广表` b ON(a.`二维码编号` = b.`二维码编号`) LEFT JOIN `用户` c ON(a.uid = c.id) WHERE b.`用户id` =".$_SESSION['vo用户数据']['id']);

    }


    public function fc查找所有语音课程($当前页码,$参数,$搜索=null,$type='语音'){
        $do_test_user = new DoTest_user();
        $do_test_user->set_openId($_SESSION['vo用户数据']['openID']);
        if ($do_test_user->where($do_test_user->data)->count()) {
            $sql = "SELECT a.*,b.`name`,b.`头像`,b.seller_name,(SELECT COUNT(*) FROM `语音课程报名` c WHERE c.`课程id` = a.id ) AS `数量` FROM `语音课程` a LEFT JOIN `用户` b ON (a.`讲课专家id` = b.id)   WHERE a.`type`='".$type."'" ;
        } else {
            $sql = "SELECT a.*,b.`name`,b.`头像`,b.seller_name,(SELECT COUNT(*) FROM `语音课程报名` c WHERE c.`课程id` = a.id ) AS `数量` FROM `语音课程` a LEFT JOIN `用户` b ON (a.`讲课专家id` = b.id)   WHERE a.`type`='".$type."' and `发送` ='已发送' and is_test = 0 " ;
        }
        if($搜索['标题']!=null){
            $sql.=" and a.title like '%".$搜索['标题']."%'";
        }

        $sql.=" ORDER BY a.id DESC ";

        $语音课程=pdo()->page($sql,$当前页码,10,$参数);

        return $语音课程;
    }

    public function fc查找课程历史消息($当前页码,$参数,$课程id,$时间){

        $sql = "SELECT a.*,b.`头像`,b.`name`,b.`id` as `用户id`,a.`serverid` FROM `聊天记录` a  LEFT JOIN `用户` b ON(a.`用户id`=b.id)  WHERE a.`课程id`=".$课程id ." and a.时间 < '".$时间."' " ;
//." order by a.id desc"
        $语音课程=pdo()->page_倒排正显示($sql,$当前页码,10,$参数);

        return $语音课程;
    }
    public function fc查找群历史消息($当前页码,$参数,$群id,$时间){

        $sql = "SELECT a.*,b.`头像`,b.`name`,b.`id` as `用户id` FROM `群聊` a  LEFT JOIN `用户` b ON(a.`用户id`=b.id)  WHERE a.`群id`='".$群id ."' and a.时间 < '".$时间."' " ;
//." order by a.id desc"

        $语音课程=pdo()->page_倒排正显示($sql,$当前页码,10,$参数);

        return $语音课程;
    }

    public  function fs生成缓存文件($信息,$type){
        $文件地址='../../Ram_disk';
        $文件夹存在=is_dir('../../Ram_disk');
        if(!$文件夹存在){
            exec(" mkdir ".$文件地址);
            exec("mount -t ramfs none ".$文件地址);
        }
        $Tools= new Tools();

        $文件是否存在 = is_file($文件地址.'/'.$信息['serverid'].'.'.$type);

        if(!$文件是否存在){
            $c生成文件 = $Tools->f生成文件($文件地址.'/'.$信息['serverid'].'.'.$type,$信息['二进制内容']);
        }
        return true;
    }

    public function fc查找所有病历文章($当前页码,$参数,$搜索=null){

        $sql = "SELECT a.*,b.`name`,b.`头像`  FROM `病历文章` a  LEFT JOIN `用户` b ON (a.`添加用户id` = b.id)  " ;

        if($搜索['标题']!=null){
            $sql.=" where a.title like '%".$搜索['标题']."%'";
        }else{
            if(isset($参数['an']) && $参数['an'] ==='已回答'){

                $sql.="  WHERE a.评论次数>0 ";
            } else if(isset($参数['an']) && $参数['an'] ==='待回答'){

                $sql.=" where a.评论次数=0 ";
            }
            if(@$参数['zt']){

                $sql.=" ORDER BY a.".@$参数['zt']." DESC ";
            }
        }
        $语音课程=pdo()->page($sql,$当前页码,10,$参数);

        return $语音课程;
    }

}